package com.floreantpos.model.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

import com.floreantpos.PosException;
import com.floreantpos.model.Shift;

public class ShiftDAO extends BaseShiftDAO {

  /**
   * Default constructor. Can be used in place of getInstance()
   */
  public ShiftDAO() {
  }

  public boolean exists(String shiftName) throws PosException {
    Session session = null;

    try {
      session = createNewSession();
      Criteria criteria = session.createCriteria(getReferenceClass());
      criteria.add(Restrictions.eq(Shift.PROP_NAME, shiftName));
      List list = criteria.list();
      if (list != null && list.size() > 0) {
        return true;
      }
      return false;
    } catch (Exception e) {
      throw new PosException("An error occured while trying to check Shift duplicacy", e);
    } finally {
      if (session != null) {
        try {
          session.close();
        } catch (Exception e) {
        }
      }
    }
  }

  public void refresh(Shift shift) throws PosException {
    Session session = null;

    try {
      session = createNewSession();
      session.refresh(shift);
    } catch (Exception e) {
      throw new PosException("An error occured while refreshing Shift state.", e);
    } finally {
      if (session != null) {
        try {
          session.close();
        } catch (Exception e) {
        }
      }
    }
  }
}
